This disclosure relates generally to data movement on storage devices and, more specifically, to systems and methods for adaptively offloading data movement operations from a client computer device to an attached storage system.
Enterprise storage systems employ disk arrays that are physically independent enclosures containing a disk array controller, a disk cache, and multiple physical disk drives. The disk array controller manages the physical disk drives and exposes them to connected computer systems as logical data storage units, each identified by a logical unit number (LUN), and enable storage operations such as cloning, snapshotting, mirroring, and replication to be carried out on the data storage units using storage hardware.
Computer systems that employ disk arrays are typically configured with a file system (e.g., at the disk drive level) in tandem with a logical volume manager (e.g., at a higher level, typically by the computer system). The logical volume manager is a software or firmware component that organizes a plurality of data storage units into a logical volume, which may be a collection of several physical partitions or sections of a disk. The logical volume is available in the form of a logical device With a contiguous address space on which individual files of a file system are laid out. The mapping of the logical volume to the data storage units is controlled by the computer system and, as a result, disk arrays may not know how individual files are laid out on the data storage units. Therefore, a disk array cannot invoke its hardware to carry out storage operations such as cloning, snapshotting, mirroring, and replication on a per-file basis.
A conventional solution for carrying out storage operations in a disk array on a per-file basis is to add storage metadata in data structures managed by the disk array. Disk arrays, however, are provided by a number of different vendors and storage metadata varies by vendor. This solution is not attractive because the file system would then need to be customized for each different vendor. For this reason, storage operations such as cloning, snapshotting, mirroring, and replication of files have been typically carried out using software techniques using through traditional standard file system calls.